#ifndef  __EDITEVENTHANDLER_H__
#define  __EDITEVENTHANDLER_H__

// seq
#include "seq/EventHandler.h"
#include "seq/Event.h"

namespace editor {

enum EditEventTypes {
    EDT_EVT_UPDATEEVENT     = 101,
    EDT_EVT_MOVETICK        = 102,
    EDT_EVT_CHANGE_TICKPER4 = 103
};

enum EditEventHandlerTypes {
    EDT_EVT_HND_UPDATEEVENT        = 101,
    EDT_EVT_HND_SCROLLBIND         = 102,
    EDT_EVT_HND_CHANGE_TICKPER4    = 103,
    EDT_EVT_HND_UPDATE_MAIN_STATUS = 104
};

class UpdateEventHandler : public seq::EventHandler {
public:
    UpdateEventHandler(int screenID) :
        screenID_(screenID)
    {}

    virtual ~UpdateEventHandler() {}

    virtual void execute(boost::any event);
    virtual int typeID() const {return EDT_EVT_HND_UPDATEEVENT;}
private:
    int screenID_;
};

class ScrollBindEventHandler : public seq::EventHandler {
public:
    ScrollBindEventHandler(int screenID = 0) :
        screenID_(screenID)
    {}

    virtual ~ScrollBindEventHandler() {}

    virtual void execute(boost::any event);
    virtual int typeID() const {return EDT_EVT_HND_SCROLLBIND;}
private:
    int screenID_;
};

class ChangeTickPer4EventHandler : public seq::EventHandler {
public:
    ChangeTickPer4EventHandler() {}

    virtual ~ChangeTickPer4EventHandler() {}

    virtual void execute(boost::any event);
    virtual int typeID() const {return EDT_EVT_HND_CHANGE_TICKPER4;}
private:
};

class UpdateMainStatusEventHandler : public seq::EventHandler {
public:
    UpdateMainStatusEventHandler() {}

    virtual ~UpdateMainStatusEventHandler() {}

    virtual void execute(boost::any event);
    virtual int typeID() const {return EDT_EVT_HND_UPDATE_MAIN_STATUS;}
private:
};

} // end of namespace editor

#endif   /* ----- #ifndef __EDITEVENTHANDLER_H__  ----- */
